﻿using System;

namespace WeDonekRpc.Client.Interface
{
    public interface IScoreService : IDisposable, IAsyncDisposable
    {
        IScoreService CreateScore ();
        IScoreService CreateScore ( object key );
        object Resolve ( Type form );
        object Resolve ( Type form, object name );
        T Resolve<T> ();
        T Resolve<T> ( string name );
        object ResolveOptional ( Type form );
        object ResolveOptionalService ( object key, Type form );
        bool TryResolve<T> ( out T data ) where T : class;
        bool TryResolve<T> ( string name, out T data ) where T : class;

        bool IsRegistered ( Type type );
        bool IsRegistered ( Type type, object name );
    }
}